package pe.edu.upc.dew.web;

import gob.reniec.apachecxf.consulta.Autentificacion;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate;

import pe.edu.upc.dew.model.Papeleta;
import pe.edu.upc.dew.model.PapeletaList;
import pe.edu.upc.dew.util.Util;

@Controller
public class ConsultaController {
	private Logger logger = Logger.getLogger(ConsultaController.class);
	
    @Autowired
	private Autentificacion autentificacion;
    
    private RestTemplate restTemplate = new RestTemplate();

	@RequestMapping(value = "/consulta.htm", method = RequestMethod.POST)
	public String display(@RequestParam("dni") String dni, Model model,
			HttpServletRequest request) {
		// Usuario usuario = usuarioService.getUsuario(user, clave);
		System.out.println("dni  : " + dni);
		
		//String cadResultadoReniec = autentificacion.obtenerDatos("10664149");
    	String cadResultadoReniec = "10664149,Roger,Campos,Salas,Masculino,Av. Naranjal 318 - Urb. Industrial,23/05/1979";
    	//String cadResultadoReniec = "No esta acreditado";
    	
    	String cadResultadoEssalud = "10664149#Titular#5901281MTCUA003#Regular#UBAP_LOS OLIVOS#Av. Naranjal 318 - Urb. Industrial#31/05/2012#";
    	//String cadResultadoEssalud = "No esta acreditado";
    	
    			
    	//String cadResultadoSat = historial.obtenerSanciones("10664149");    	
    	String cadResultadoSat = "10664149#8682296#Q10664148#G02#COX292#Graves#11/06/2010#%10664149#7338720#Q10664148#B09#COX292#Muy Graves#12/12/2007#%10664149#6986716#Q10664148#C28#COX292#Graves#02/05/2007#%";
    	//String cadResultadoSat = No tiene papeletas"; 
    	
		// Prepare acceptable media type--------------------------------------------------
/*		List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
		acceptableMediaTypes.add(MediaType.APPLICATION_XML);
		
		// Prepare header
		HttpHeaders headers = new HttpHeaders();
		headers.setAccept(acceptableMediaTypes);
		HttpEntity<Papeleta> entity = new HttpEntity<Papeleta>(headers);

		// Send the request as GET
		try {
			ResponseEntity<PapeletaList> result = 
					restTemplate.exchange("http://localhost:8080/dsd-sat-rest-servidor/sat/papeletas",
							HttpMethod.GET, entity, PapeletaList.class);
			System.out.println("cant papeletas " + result.getBody().getData().size());
			// Add to model
			model.addAttribute("papeletas", result.getBody().getData());
			
		} catch (Exception e) {
			logger.error(e);
		}*/
		// Prepare acceptable media type--------------------------------------------------
       
		if (!cadResultadoReniec.equals("No esta registrado")  )
        {        	
        	request.setAttribute("ciudadanoInfo", Util.convertirBeanAutentificacion(cadResultadoReniec));   
        	System.out.println("Registrado");

        }
        else{
        	request.setAttribute("ciudadanoInfo", cadResultadoReniec);
        	System.out.println("No Registrado");
        }
		
		if (!cadResultadoEssalud.equals("No esta acreditado")  )
        {        	
        	request.setAttribute("acreditacionInfo", Util.convertirBeanAcreditacion(cadResultadoEssalud));   
        	System.out.println("esta acreditado");

        }
        else{
        	request.setAttribute("acreditacionInfo", cadResultadoEssalud);
        	System.out.println("No esta acreditado");
        }
        
    	
        if (!cadResultadoSat.equals("No tiene papeletas")  )
        {        	
        	request.setAttribute("sanciones", Util.convertirLista(cadResultadoSat));       

        }
        else{
        	request.setAttribute("sanciones", cadResultadoSat);
        }

		
		return "mainPage";
	}
}
